﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using UricaoWeb.LogicaDeNegocios.Cargos;
using UricaoWeb.Presentacion;
using UricaoWeb.LogicaDeNegocios.Seguridad_y_Roles;

public partial class _api_cargo_modificar : API_Seguridad_Principal
{
    private readonly string _mensajeError = "No se pudo realizar su solicitud. Intente más tarde."; //Mensaje de error
    private readonly string _mensajeSinCargos = "No hay cargos en la base de datos. Intente luego."; //Mensaje de sin cargos en la base de datos
    public static int _fkHotel = 1;
    private readonly string _cargoNombre = "_cargoNombre"; //Nombre del cargo
    private readonly string _cargoEstado = "_cargoEstado"; //Estado del cargo
    private readonly string _nextPage = "Api_cargo_Modificar2.aspx"; //Página a redireccionar una vez seleccionado el elemento a modificar.

    /// <summary>
    ///Metodo que actualiza los elementos de la página al cargarla.
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["user"] != null)
        {
             Logica_Usuario usuario = (Logica_Usuario)Session["user"];
            _fkHotel = Convert.ToInt32(usuario.FkHotel);
            var master = Master as MasterPage;
            if (master != null)
            {
                master.actualizar_label();
            }
            base.validar_usuario();
            if (!IsPostBack)
                Cargar();
        }
        else 
            Server.Transfer("API_Seguridad_Login_.aspx", false);
    }

    /// <summary>
    ///Metodo que llena el listbox de la página según el texto escrito en el textbox
    /// </summary>
    protected void Cargar()
    {
        ListaCargos.Items.Clear(); //Limpiar listbox
        Cargo[] cargos = new Cargo().ConsultarCargosGeneral(); //Consultar cargos en la base de datos
        if (cargos != null)
        {
            if (cargos.Length > 0) 
            {
                //Llenar lista
                for (int i = 0; i < cargos.Length; i++)
                    if (cargos[i]._nombre.ToUpper().Contains(BuscarCargo.Text.ToUpper()))
                        ListaCargos.Items.Add(cargos[i]._nombre);
                //Habilitar controles
                BotonMod.Enabled = false;
                ListaCargos.Enabled = true;
                BuscarCargo.Enabled = true;
            }
            else
                MostrarMensaje(_mensajeSinCargos);
        }
        else
            MostrarMensaje(_mensajeError);
    }

    /// <summary>
    ///Metodo onClick del botón Modificar. Redirecciona a la página de modificación del cargo seleccionado.
    /// </summary>
    protected void Button3_Click(object sender, EventArgs e)
    {
        Cargo _datos = new Cargo().ConsultarCargoPorNombre(ListaCargos.SelectedValue); //Consulta los datos del cargo seleccionado
        if (_datos != null)
        {
            //Iniciar variable de sesión con campos del cargo
            Session[_cargoNombre] = ListaCargos.SelectedValue;
            Session[_cargoEstado] = _datos._activo.ToString();
            //Habilitar controles
            BotonMod.Enabled = false;
            ListaCargos.Enabled = false;
            BuscarCargo.Enabled = false;
            Response.Redirect(_nextPage); 
        }
        else
            MostrarMensaje(_mensajeError);
    }

    /// <summary>
    ///Metodo que actualiza los elementos de la página al escribir en el textbox.
    /// </summary>
    protected void BuscarCargo_TextChanged(object sender, EventArgs e)
    {
        Cargar();
    }

    /// <summary>
    ///Metodo que actualiza los elementos de la página al cargarla.
    /// </summary>
    protected void ListaCargos_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (ListaCargos.SelectedIndex > -1)
            BotonMod.Enabled = true;
    }

    /// <summary>
    ///Metodo que muestra un mensaje según el parámetro mensaje.
    /// </summary>
    /// <param name="mensaje">El mensaje que se desea mostrar</param>
    protected void MostrarMensaje(string mensaje)
    {
        Page.ClientScript.RegisterStartupScript(this.GetType(), "alert" + UniqueID, "alert('" + mensaje + "');", true);
    }
}